#pragma once

namespace MomogenkyouSystem	{

class GraphicsSystem
{
protected:
	static	HWND					m_hWnd;			//	Window Handle
public:
	static	DEVICEMANAGER			DeviceManager;	//	Seldom have to interact with this
	static	GRAPHICSDEVICE			Device;			//	Common Device, Textures, models etc uses this
	
	static	VIEWPORT				ViewPort;		//	The ViewPort of the current GraphicsSystem

	static	SURFACE					DepthBuffer;
	static	SURFACE					BackBuffer;

	static	SPRITEBATCH				SpriteBatch;	//	The SpriteBatch for drawing Text or 2D images

	//	Values to be used for Shader Blocks
	static	MATRIX					param_matView;			//	Gobal	View		Matrix
	static	MATRIX					param_matProjection;	//	Gobal	Projection	Matrix
	static	float4					param_vSunLight;		//	Gobal	Sun			Position

	//	Initialize the graphics system
	//	@param	param_WindowHandle		HWND of created window
	//	@param	param_WindowInstance	HINSTANCE of created window
	static	bool					Initialize(	const HWND		&	param_WindowHandle,
												const HINSTANCE &	param_WindowInstance);

	//	Shutsdown the graphics system
	static	bool					Shutdown();
};

}